From 56e590bd3147cdb3211fbe61d1f4cad7a392fffa Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 5 May 2020 23:12:20 -0400 Subject: [PATCH] widget: Drop the ::size-allocate signal This signal is mainly used for bad things, and we don't want to emit signals during layout if we can avoid it. If you are subclassing, you should either use a layout manager or override the size_allocate vfunc. If you are using a GtkDrawingArea or GtkGLArea, use their ::resize signals to learn about size changes. Fixes: #2705 --- gtk/gtkwidget.c | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index f873f2b4ff..b6beceb8bc 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -1485,28 +1485,6 @@ gtk_widget_class_init (GtkWidgetClass *klass) NULL, G_TYPE_NONE, 0); - /** - * GtkWidget::size-allocate: - * @widget: the object which received the signal. - * @width: the content width of the widget - * @height: the content height of the widget - * @baseline: the baseline - */ - widget_signals[SIZE_ALLOCATE] = - g_signal_new (I_("size-allocate"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkWidgetClass, size_allocate), - NULL, NULL, - _gtk_marshal_VOID__INT_INT_INT, - G_TYPE_NONE, 3, - G_TYPE_INT, - G_TYPE_INT, - G_TYPE_INT); - g_signal_set_va_marshaller (widget_signals[SIZE_ALLOCATE], - G_TYPE_FROM_CLASS (gobject_class), - _gtk_marshal_VOID__INT_INT_INTv); - /** * GtkWidget::state-flags-changed: * @widget: the object which received the signal. @@ -4095,16 +4073,10 @@ gtk_widget_allocate (GtkWidget *widget, } else { - if (g_signal_has_handler_pending (widget, widget_signals[SIZE_ALLOCATE], 0, FALSE)) - g_signal_emit (widget, widget_signals[SIZE_ALLOCATE], 0, - priv->width, - priv->height, - baseline); - else - GTK_WIDGET_GET_CLASS (widget)->size_allocate (widget, - priv->width, - priv->height, - baseline); + GTK_WIDGET_GET_CLASS (widget)->size_allocate (widget, + priv->width, + priv->height, + baseline); } /* Size allocation is god... after consulting god, no further requests or allocations are needed */ -- 2.30.2